import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path';

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  //配置@标识符
  resolve: {
    alias: {
      "@": resolve(__dirname, './src')
    }
  },
  // 配置跨越代理
  server: {
    hmr: true,
    port: 3005,
    proxy: {
      '/api': {
        target: 'http://localhost:7071',
        changeOrigin: true,
        pathRewrite: {
          "^api": 'api'
        }
      }
    }
  },
// 构建配置
  build: {
    // 分块大小警告限制
    chunkSizeWarningLimit: 3000,
    // rollup配置
    rollupOptions: {
      // 输出配置
      output: {
        // 手动分块
        manualChunks(id) {
          // 如果id包含node_modules
          if (id.includes('node_modules')) {
            // 返回id的字符串，以node_modules/分割，再以/分割，再取第一个元素
            return id.toString().split('node_modules/')[1].split('/')[0].toString();
          }
        }
      }
    },
    // 分块文件名
    chunkFileNames: (chunkInfo) => {
      // 获取facadeModuleId，以/分割
      const facedeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split('/') : [];
      // 获取fileName，取facadeModuleId的倒数第二个元素，如果没有则取[name]
      const fileName = facedeModuleId[facedeModuleId.length - 2] || '[name]';
      // 返回文件名，格式为js/fileName/[name].[hash].js
      return `js/${fileName}/[name].[hash].js`
    }
  }
})
